/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.maistre.swarn;

import fr.maistre.swarn.Entity;
import fr.maistre.swarn.Environement;
import fr.maistre.swarn.Goal;
import fr.maistre.swarn.Ressource;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Louis Maistre
 */
public abstract class SexuedEntity extends Reproducer{
    
    protected Sex sex;
    
    public SexuedEntity(fr.maistre.swarn.DNA DNA, Environement environement,
			Goal goal, ListRessources ressourcesCritiques,
			ListRessources ressources) {
		super(DNA, environement, goal, ressourcesCritiques, ressources);
		// TODO Auto-generated constructor stub
	}
	public SexuedEntity(fr.maistre.swarn.DNA DNA, Environement environement,
			Goal goal, ListRessources ressourcesCritiques) {
		super(DNA, environement, goal, ressourcesCritiques);
		// TODO Auto-generated constructor stub
	}
	public  List<Entity> reproduce(List<Ressource> ressourcesNeeded){
        if(searchForPartner()!= null){
            SexuedEntity partner = choosePartner(searchForPartner()); 
        }
        
        //ask one of them to reproduce
        //discuss about ressources
        //sex :p
        List<Entity> childs = new ArrayList<>();
        return childs;
    }
    public abstract List<SexuedEntity> searchForPartner();
    
    public abstract SexuedEntity choosePartner(List<SexuedEntity> eventuallPartners);
   
    
    
}
